Ví dụ Dạng thức bắc cầu

Java

Chương trình Java sau minh hoạ ví dụ "shapes" đã nói ở trên và đưa ra kết quả:

API1.circle at 1.000000:2.000000 radius 7.500000API2.circle at 5.000000:7.000000 radius 27.500000
/** "Implementor" */interface DrawingAPI {    public void drawCircle(double x, double y, double radius);}/** "ConcreteImplementor" 1/2 */class DrawingAPI1 implements DrawingAPI {   public void drawCircle(double x, double y, double radius) {        System.out.printf("API1.circle at %f:%f radius %f\n", x, y, radius);   }}/** "ConcreteImplementor" 2/2 */class DrawingAPI2 implements DrawingAPI {   public void drawCircle(double x, double y, double radius) {         System.out.printf("API2.circle at %f:%f radius %f\n", x, y, radius);   }}/** "Abstraction" */interface Shape {   public void draw();                                            // low-level   public void resizeByPercentage(double pct);     // high-level}/** "Refined Abstraction" */class CircleShape implements Shape {   private double x, y, radius;   private DrawingAPI drawingAPI;   public CircleShape(double x, double y, double radius, DrawingAPI drawingAPI) {       this.x = x;  this.y = y;  this.radius = radius;        this.drawingAPI = drawingAPI;   }   // low-level i.e. Implementation specific   public void draw() {        drawingAPI.drawCircle(x, y, radius);   }      // high-level i.e. Abstraction specific   public void resizeByPercentage(double pct) {        radius *= pct;   }}/** "Client" */class BridgePattern {   public static void main(String[] args) {       Shape[] shapes = new Shape[2];       shapes[0] = new CircleShape(1, 2, 3, new DrawingAPI1());       shapes[1] = new CircleShape(5, 7, 11, new DrawingAPI2());       for (Shape shape: shapes) {           shape.resizeByPercentage(2.5);           shape.draw();       }   }}

|